/*
 * @Type CommandUtil.java
 * @Desc 命令工具类
 * @Author urmsone urmsone@163.com
 * @date 2024/6/13 02:09
 * @version
 */
package utils;

import com.alibaba.fastjson.JSONObject;
import model.command.Command;
import model.command.CommandTypeEnum;
import model.command.RmCommand;
import model.command.SetCommand;

/**
 * 命令工具类,用于从 JSON 对象中解析命令对象。
 */
public class CommandUtil {
    /**
     * JSON 对象中表示命令类型的属性名称。
     */
    public static final String TYPE = "type";

    /**
     * 从 JSON 对象中解析出命令对象。
     * 根据 JSON 对象中的 "type" 属性,创建相应的命令对象实例。
     *
     * @param value JSON 对象
     * @return 命令对象实例,如果无法解析则返回 null
     */
    public static Command jsonToCommand(JSONObject value) {
        String type = value.getString(TYPE);
        if (CommandTypeEnum.SET.name().equals(type)) {
            return value.toJavaObject(SetCommand.class);
        } else if (CommandTypeEnum.RM.name().equals(type)) {
            return value.toJavaObject(RmCommand.class);
        }
        return null;
    }
}